# -*- coding: utf-8 -*-
'''
输入 a、b 班的名单进行统计
第一行：a班，无空格分隔，一个字符一个学生，会有重复字符
第二行：b班，有一个或多个空格分隔，有重复字符
第三行：acm名单，一个或多个空格分隔
第四行：英语竞赛名单，一个或多个空格分隔
第五行：一个人

输出：
a、b所有人员数量
a、b班汇总既没有参加acm、也没有参加英语竞赛的名单和数量
所有参加竞赛的名单和数量
a、b班既参加acm又参加英语竞赛的名单及数量
参加了 acm、未参加英语竞赛的名单
参加了英语竞赛、为参加 acm 的名单
只参加 acm 或只参加 英语竞赛的人员名单
转学同学在哪个班级，如果在其中一个班级更新该班级的名单并输出

输出人员名单需要 sort
'''
from collections import OrderedDict
a= input()
b=input().split()
c=input().split()
d=input().split()
e=input()
list_1="".join(OrderedDict.fromkeys(a)) # orderedDict 实现字典对象中元素排序，这里为了取字符
st_split = list(b)
while "" in st_split:
    st_split.remove("")
list_2 = list(set(st_split))
list_2.sort(key=st_split.index)
re=len(list_1)+len(list_2)
print("\n\nTotal: "+str(re))
while "" in c:
    c.remove("")
result3=list(c)+d
st_split2 = list(d)
list2=list(set(list_2+list(list_1)).difference(set(result3)))
l2 = list(set(result3))
l2.sort(key=result3.index)
list4=[]
list4=list(set(l2) & set(c))
list41=list(set(list4) & set(d))
list5=list(set(l2).difference(set(c)))
list6=list(set(l2).difference(set(d)))
list7=list(set(list5).union(set(list6)))
print('Not in race: {0}, num: {1}'.format(sorted(list2),str(len(list2))))
print('All racers: {0}, num: {1}'.format(sorted(l2),str(len(l2))))
print('ACM + English: {0}, num: {1}'.format(sorted(list41),str(len(list41))))
print('Only ACM: {0}'.format(sorted(list6)))
print('Only English: {0}'.format(sorted(list5)))
print('ACM Or English: {0}'.format(sorted(list7)))
list_4=list(list_1)
if e in list_4:
    list_4.remove(e)
    print (sorted(list_4))
if e in list_2:
    list_2.remove(e)
    print (sorted(list_2))